home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / rdflib / syntax / serializers / XMLWriter.pyc (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  3.4 KB  |  91 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import codecs
  5. from xml.sax.saxutils import quoteattr, escape
  6.  
  7. class XMLWriter(object):
  8.     
  9.     def __init__(self, stream, namespace_manager, encoding = None, decl = 1):
  10.         if not encoding:
  11.             pass
  12.         encoding = 'utf-8'
  13.         (encoder, decoder, stream_reader, stream_writer) = codecs.lookup(encoding)
  14.         self.stream = stream = stream_writer(stream)
  15.         if decl:
  16.             stream.write('<?xml version="1.0" encoding="%s"?>' % encoding)
  17.         
  18.         self.element_stack = []
  19.         self.nm = namespace_manager
  20.         self.closed = True
  21.  
  22.     
  23.     def __get_indent(self):
  24.         return '  ' * len(self.element_stack)
  25.  
  26.     indent = property(__get_indent)
  27.     
  28.     def __close_start_tag(self):
  29.         if not self.closed:
  30.             self.closed = True
  31.             self.stream.write('>')
  32.         
  33.  
  34.     
  35.     def push(self, uri):
  36.         nm = self.nm
  37.         self._XMLWriter__close_start_tag()
  38.         write = self.stream.write
  39.         write('\n')
  40.         write(self.indent)
  41.         write('<%s' % nm.qname(uri))
  42.         self.element_stack.append(uri)
  43.         self.closed = False
  44.         self.parent = False
  45.  
  46.     
  47.     def pop(self, uri = None):
  48.         top = self.element_stack.pop()
  49.         if uri:
  50.             if not uri == top:
  51.                 raise AssertionError
  52.         
  53.         write = self.stream.write
  54.         if not self.closed:
  55.             self.closed = True
  56.             write('/>')
  57.         elif self.parent:
  58.             write('\n')
  59.             write(self.indent)
  60.         
  61.         write('</%s>' % self.nm.qname(uri))
  62.         self.parent = True
  63.  
  64.     
  65.     def namespaces(self, namespaces):
  66.         write = self.stream.write
  67.         write('\n')
  68.         for prefix, namespace in namespaces:
  69.             if prefix:
  70.                 write("  xmlns:%s='%s'\n" % (prefix, namespace))
  71.                 continue
  72.             write("  xmlns='%s'\n" % namespace)
  73.         
  74.  
  75.     
  76.     def attribute(self, uri, value):
  77.         write = self.stream.write
  78.         write(' %s=%s' % (self.nm.qname(uri), quoteattr(value)))
  79.  
  80.     
  81.     def text(self, text):
  82.         self._XMLWriter__close_start_tag()
  83.         if '<' in text and '>' in text and ']]>' not in text:
  84.             self.stream.write('<![CDATA[')
  85.             self.stream.write(text)
  86.             self.stream.write(']]>')
  87.         else:
  88.             self.stream.write(escape(text))
  89.  
  90.  
  91.